/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: Hua YY
 * Date: 2024-11-29
 * Time: 21:51
 */


class Solution3 {
    public String convert(String s, int numRows) {
        //处理一下特殊情况
        if(numRows == 1){
            return s;
        }
        //1：创建一个变量来接收拼接的字符串
        int d = 2 * numRows - 2;
        StringBuilder ret = new StringBuilder();
        int len = s.length();
        //2:确定第一行的下标，并按照下标找到该字符，拼接上去
        for(int i = 0 ; i < len ; i += d){
            ret.append(s.charAt(i));
        }
        //3：确定中间的行数，两层循环，一行一行处理，需要两个指针用于确定坐标，然后拼接
        for(int i = 1 ; i < numRows-1 ; i++){
            for(int k = i , j = d - k ; k < len || j < len ; k += d , j += d){
                if(k < len){
                    ret.append(s.charAt(k));
                }
                if(j < len){
                    ret.append(s.charAt(j));
                }
            }
        }

        //4：确定好最后一行，同第一行处理方式一样
        for(int i = numRows-1 ; i < len ; i += d){
            ret.append(s.charAt(i));
        }
        return ret.toString();

    }
}
public class Test3 {
}
